home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993 October: Windmill on DISC / ADC Developer CD (1993-10) (''Windmill On DISC'')_iso / Dev.CD Oct 93.iso / System Software / U.S. System Software / System 7 Pro™ Beta 11 / Development Tools / Sample Code / Interprogram Messaging Manager / IPM MessageBoard / misc. junk < prev    next >
Encoding:
Text File  |  1993-06-28  |  7.8 KB  |  266 lines  |  [TEXT/MPS ]

  1.                     // ------------------- create queue stuff -------------------------
  2. #if 0                    
  3.                     pstrcpy((Ptr)&myExtn.u.queue.queueName,"\pTest Queue");
  4.                     dss.extensionSize = (myExtn.u.queue.queueName[0] + 1) + sizeof(OSType);
  5. OCECopyRString(&newQueueNameToTest,dss.entitySpecifier->local.recordName,kRStringMaxBytes);
  6.                     
  7.                     
  8.             DebugStr("\pcheck CreateQueue dss struct");
  9.                     IPMpb.createQueuePB.queue = &dss;
  10.                     IPMpb.createQueuePB.identity = gIdentity;
  11.  
  12.  
  13.                     gotAddress = AddressOMini(&packedReply2,gTypesList/*typeList*/,1/*numTypes*/,gIdentity,
  14.                             kEnumAllMask,"\pSelect Owner");
  15.                 
  16.                 //    HSetState((Handle)catTypes,hState);
  17.                     if (gotAddress==false)
  18.                         return kUserCancelled;
  19.                 
  20.                     if (packedReply2) 
  21.                     {
  22.                         OCEUnpackDSSpec(packedReply2,&dss2,&zzz);
  23.  
  24.                         OCENewRecordID(zzz.rli,&zzz.local,&testRecID);
  25.                         ridSize = OCEPackedRecordIDSize(&zzz);
  26.                         testPckRecID = (PackedRecordIDPtr)NewPtr(ridSize);
  27.                         if (testPckRecID == nil)
  28.                             DebugStr("\pgot nil pointer");
  29.                         err = OCEPackRecordID(&zzz,testPckRecID,ridSize);
  30.                         if (err != noErr)
  31.                             DebugStr("\perr on OCEPackRecordID");
  32.                         
  33.                         IPMpb.createQueuePB.owner = testPckRecID;
  34.                         err = IPMCreateQueue(&IPMpb,false);
  35.                         if (err != noErr)
  36.                             DebugStr("\perr on IPMCreateQueue");
  37.                     }
  38.                     DisposePtr((Ptr)testPckRecID);
  39. #endif
  40.  
  41.                     // ------------------- open server queue --------------------------
  42.             
  43.                     IPMpb.openContextPB.ioCompletion = nil;
  44.                     err = IPMOpenContext(&IPMpb,false);
  45.                     if (err != noErr)
  46.                         DebugStr("\perr on IPMOpenContext");
  47.                     else
  48.                         cRef = IPMpb.openContextPB.contextRef;
  49.                     
  50.                     
  51.                     
  52.                     IPMpb.openQueuePB.ioCompletion = nil;
  53.                     IPMpb.openQueuePB.contextRef = cRef;
  54.                     
  55.                 DebugStr("\pcheck recepient struct");
  56.                     IPMpb.openQueuePB.queue = &dss;
  57.                 Debugger();
  58.  
  59.                     IPMpb.openQueuePB.identity = gIdentity;
  60.                     IPMpb.openQueuePB.filter = nil;
  61.                     
  62.                     err = IPMOpenQueue(&IPMpb,false);
  63.                     if (err != noErr)
  64.                         DebugStr("\perr on IPMOpenQueue");
  65.                     
  66.                     err = IPMCloseQueue(&IPMpb,false);
  67.                     if (err != noErr)
  68.                         DebugStr("\perr on IPMCloseQueue");
  69.             
  70.                     // --------------------------------------------------------------
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84. OSErr GetServerQueue(OCEPackedRecipient **pmPackedRecipient)
  85. {
  86.     PackedDSSpecPtr packedReply,packedReply2;
  87.     OSErr err;
  88. //    RString addressCategory;
  89.     unsigned short numTypes;
  90.     PackedRStringListHandle catTypes = nil;
  91.     unsigned char hState;
  92.     OCERecipient *ipmRecipient;
  93.     unsigned long newXtnLength,recipLength;
  94.     SMPRecipientDescriptorPtr recipList,freeRecip;
  95.     Boolean gotAddress;
  96.     AttributeType        *attrType;
  97.  
  98.  
  99. #if 0
  100. // -------------------- code that gets the PrefMessageQ from user record ---------------------------
  101.     gotAddress = AddressOMini(&packedReply,gTypesList/*typeList*/,1/*numTypes*/,gIdentity,
  102.             kEnumAllMask,"\pIdentify Server:");
  103.  
  104. //    HSetState((Handle)catTypes,hState);
  105.     if (gotAddress==false)
  106.         return kUserCancelled;
  107.  
  108.     if (packedReply) 
  109.     {
  110.         OCEUnpackDSSpec(packedReply,&dss,&rid);
  111.  
  112. //Debugger();
  113. //        err = GetAttributeFromRID (&rid, OCEGetIndAttributeType (kPrefMsgQAttrTypeNum),
  114. //        &theAttribute, gIdentity);
  115. //        aptr = theAttribute;
  116.  
  117.         attrType = OCEGetIndAttributeType (kPrefMsgQAttrTypeNum);
  118.         dss.extensionType = kOCEentnXtn;    // 'entn'
  119.         myExtn2.subExtensionType = kOCEAttrXtn;    //    'attr'
  120.         OCECopyRString((RStringPtr)attrType,(RStringPtr)&myExtn2.u.attribute.attributeName,kAttributeTypeMaxBytes);
  121. // #################    why wont sizeof(RStringHeader) work!!!!!!!!!!!!!!!
  122.         dss.extensionSize = sizeof(dummy) + attrType->dataLength  + sizeof(OSType);
  123.         dss.extensionValue = (Ptr)&myExtn2;
  124.  
  125.         recipLength = OCEPackedDSSpecSize(&dss);
  126.         *pmPackedRecipient = NewPtrChk(recipLength);
  127.         if ((err=MemError())==noErr)
  128.         OCEPackDSSpec(&dss,(PackedDSSpec *)*pmPackedRecipient,recipLength);
  129.  
  130.         DisposPtr((Ptr)packedReply);
  131.  
  132.     }
  133. return err;
  134. #endif
  135.  
  136.  
  137.  
  138.  
  139. // -------------------- code for when you select the server record--------------------------
  140.  
  141. #if 0
  142. //    OCECToRString(/*kDETCategoryAllItems*/kDETCategoryAllCategories,smRoman,&allCategories,kRStringMaxBytes);
  143.     err = SDPGetCategoryTypes(&allCategories,&catTypes);
  144.     if (err!=noErr)
  145.         return err;
  146. //    hState = HGetState((Handle)catTypes);
  147. //    HLock((Handle)catTypes);
  148.  
  149.         // how many are there?
  150.     nParts = OCEDNodeNameCount(*catTypes);
  151.  
  152.     numTypes = OCEUnpackPathName(*catTypes,typeList,nParts);
  153. #endif
  154.     gotAddress = AddressOMini(&packedReply,gTypesList/*typeList*/,1/*numTypes*/,gIdentity,
  155.             kEnumAllMask,"\pIdentify Server:");
  156.  
  157. //    HSetState((Handle)catTypes,hState);
  158.     if (gotAddress==false)
  159.         return kUserCancelled;
  160.  
  161.     if (packedReply) 
  162.     {
  163.  
  164.  
  165. // -------------------- code for when you select the server record--------------------------
  166.         OCEUnpackDSSpec(packedReply,&dss,&rid);
  167.         dss.extensionType = kOCEentnXtn;    // 'entn'
  168.             // check if record type is 'AppleMail M&M'
  169.         if (OCEEqualRString(rid.local.recordType,OCEGetIndRecordType(kMnMRecTypeNum),OCEGetDSSpecInfo(&dss)/*kOCERecordType*/) != true)
  170.         {
  171.             DebugStr("\precord types not equal");
  172.             return false;    // ???????????????
  173.         }
  174.         
  175.         myExtn.subExtensionType = kOCEQnamXtn;    //    'qnam'
  176.         OCECopyRString(rid.local.recordName,&tempRStr,kRStringMaxBytes);
  177.         pstrcpy((Ptr)&myExtn.u.queue.queueName,OCERToPString(&tempRStr));
  178.         
  179.         dss.extensionSize = (myExtn.u.queue.queueName[0] + 1) + sizeof(OSType);
  180.         dss.extensionValue = (Ptr)&myExtn;
  181.  
  182.  
  183.         
  184.         recipLength = OCEPackedDSSpecSize(&dss);
  185.         *pmPackedRecipient = NewPtrChk(recipLength);
  186.         if ((err=MemError())==noErr)
  187.         OCEPackDSSpec(&dss,(PackedDSSpec *)*pmPackedRecipient,recipLength);
  188.  
  189.         DisposPtr((Ptr)packedReply);
  190.  
  191.     }
  192.     
  193.     return err;
  194.  
  195. }
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206. OSErr GetAttributeTypesFromRID (RecordIDPtr rid, AuthIdentity identity)
  207. {
  208.     OSErr            err;
  209.     DirParamBlock        pb;
  210.     ParseInfo            parseInfo;
  211.  
  212.     parseInfo.rid = rid;
  213.     parseInfo.identity = identity;
  214.     pb.enumerateAttributeTypesGetPB.ioCompletion = nil;
  215.     pb.enumerateAttributeTypesGetPB.serverHint.aNet = NULL;
  216.     pb.enumerateAttributeTypesGetPB.serverHint.aNode = NULL;
  217.     pb.enumerateAttributeTypesGetPB.serverHint.aSocket = NULL;
  218.     pb.enumerateAttributeTypesGetPB.dsRefNum = 0;
  219.     pb.enumerateAttributeTypesGetPB.identity = identity;
  220.     pb.enumerateAttributeTypesGetPB.clientData = 0L;
  221.     pb.enumerateAttributeTypesGetPB.aRecord = rid;
  222.     pb.enumerateAttributeTypesGetPB.includeStartingPoint = TRUE;
  223.     pb.enumerateAttributeTypesGetPB.getBuffer = NewPtr (kBufSize);
  224.     if ((err = MemError()) != noErr)
  225.         return err;
  226.     pb.enumerateAttributeTypesGetPB.getBufferSize = kBufSize;
  227.     pb.enumerateAttributeTypesGetPB.startingAttrType = NULL;
  228.     if ((err = DirEnumerateAttributeTypesGet (&pb, FALSE)) == noErr)
  229.     {
  230.         pb.enumerateAttributeTypesParsePB.ioCompletion = nil;
  231.         pb.enumerateAttributeTypesParsePB.serverHint.aNet = NULL;
  232.         pb.enumerateAttributeTypesParsePB.serverHint.aNode = NULL;
  233.         pb.enumerateAttributeTypesParsePB.serverHint.aSocket = NULL;
  234.         pb.enumerateAttributeTypesParsePB.dsRefNum = 0;
  235.         pb.enumerateAttributeTypesParsePB.identity = identity;
  236.         pb.enumerateAttributeTypesParsePB.clientData = (long) &parseInfo;
  237.         pb.enumerateAttributeTypesParsePB.aRecord = rid;
  238.         pb.enumerateAttributeTypesParsePB.eachAttrType = myForEachAttrTypeEnumerate;
  239.         pb.enumerateAttributeTypesParsePB.getBuffer = pb.enumerateAttributeTypesGetPB.getBuffer;
  240.         pb.enumerateAttributeTypesParsePB.getBufferSize = pb.enumerateAttributeTypesGetPB.getBufferSize;
  241.         err = DirEnumerateAttributeTypesParse (&pb, FALSE);
  242.     }
  243.  
  244.     if (pb.enumerateAttributeTypesGetPB.getBuffer != nil)
  245.         DisposePtr (pb.enumerateAttributeTypesGetPB.getBuffer);
  246.  
  247.     return (err);
  248. }
  249.  
  250. static pascal Boolean myForEachAttrTypeEnumerate (long clientData,
  251.     const AttributeType *attrType/*const AttributeTypePtr attrType*/)
  252. {
  253.     OSErr        err;
  254.     ParseInfo        *parseInfo;
  255.     AttributePtr    theAttribute;
  256.  
  257.     parseInfo = (ParseInfo *) clientData;
  258.     err = GetAttributeFromRID ((*parseInfo).rid, (AttributeTypePtr)attrType, &theAttribute,
  259.         (*parseInfo).identity);
  260.  
  261.     if (err == noErr)
  262.         DisposePtr ((Ptr)theAttribute);
  263.  
  264.     return (FALSE);
  265. }
  266.